Many data processing systems and architectures provide ways of isolating and protecting sensitive data and sections of code from access by unauthorised persons or processes. Although it is important to be able to provide security there is an overhead in performance and circuit area associated with this protection.
In small systems such as microcontrollers, it is very important that these overheads are kept low and thus, some compromise between level of security and performance may need to be made.
One way of keeping data and code secure is provided by ARM® of Cambridge UK, with their Trustzone architecture where there are secure and non-secure states and an exception instruction is used to transition between the states, the exception handler protecting the security of the secure side. Although this approach provides a high degree of security, considerable software intervention in the form of the software exception handler is required to change security states which both reduces the performance of the system and increases the amount of effort required to develop an external application program interface API for the secure software as all calls must be proxied through the exception hander.
U.S. Pat. No. 7,966,466 and US 2008/0250216 discloses an alternative secure system where a data store has a secure side and a non-secure side and the location within this data store of the code currently being executed determines the domain the processor is operating in and thus, the data that it is allowed to access.